package case1;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * 注：
 * 1.重要的是什么时候使用request和response对象
 * 在登陆的时候，失败需要页面的请求转发（页面的网址并不会发生变化）
 * 在登陆成功的时候需要request进行页面的跳转，无论是jsp页面还是servlet类
 *
 * 2. 用于数据的存储什么时候使用session、什么时候使用request域对象
 *  多次请求的时候使用session进行存储，request针对的是一次请求内
 *
 * 3.本案例中需要进行先验证验证码在进行用户名和密码的验证
 * 每次进行用户名和密码的验证需要运用数据库，防止资源的浪费
 *
 * 4.获取request的数据需要进行request.setCharacterEncoding("utf-8");编码设置
 * 获取response的数据需要设置response.setContentType("text/html;charset=utf-8");
 *
 * @author Mc.Chai
 * @program: JavaWeb
 * @create 2022-03-26-16:53 16:53
 */
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //编码方式
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String checkCode = request.getParameter("checkCode");
        /**判断验证码*/
        //获取session对象
        HttpSession session = request.getSession();
        String checkCodeSession = (String )session.getAttribute("checkCode");
        //删除session中存储的验证码
        session.removeAttribute("checkCode");
        //判断验证码是否符合，忽略大小写
        if (checkCodeSession!=null&&checkCodeSession.equalsIgnoreCase(checkCode)){
            //符合

            //判断用户名和密码是否相同（以后连接数据库）
            if ("chai".equals(username)&& "123123".equals(password)){
                //验证用户密码成功
                //存储用户的信息
                session.setAttribute("user",username);
                //跳转页面
                response.sendRedirect(request.getContextPath()+"/success.jsp");
            }else{
                request.setAttribute("user_error","用户名或密码错误");
                System.out.println("用户名密码错误");
                //请求转发页面
                request.getRequestDispatcher("/login.jsp").forward(request,response);
            }
        }else{
            //否
            request.setAttribute("user_error","验证码错误！");
            System.out.println("验证码错误");
            request.getRequestDispatcher("/login.jsp").forward(request,response);
        }


    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}
